#include "regmod_seguro.h"
#include "ui_regmod_seguro.h"
#include <Utils/Utils.h>
#include <QDjango.h>

RegMod_seguro::RegMod_seguro(QWidget *parent, Seguro *seguro_mod) :
    QDialog(parent),
    ui(new Ui::RegMod_seguro)
{
    ui->setupUi(this);
    id_seguro = -1;
    seguro_nuevo = new Seguro();
    ui->telefonoSeguro->setInputMask("999#-999-999");
    ui->rucSeguro->setInputMask("9999999#-9");
    esModificacion = false;

    if(seguro_mod != 0){
        this->setWindowTitle("Modificar Seguro");

        ui->nombreSeguro->setText(seguro_mod->getNombre());
        ui->rucSeguro->setText(seguro_mod->getRuc());
        ui->contactoSeguro->setText(seguro_mod->getContacto());
        ui->correoSeguro->setText(seguro_mod->getCorreo());
        ui->direccionSeguro->setText(seguro_mod->getDireccion());
        ui->telefonoSeguro->setText(seguro_mod->getTelefono());
        esModificacion = true;
        id_seguro = seguro_mod->getId_seguro();
        seguro_mod->deleteLater();
    }
    else this->setWindowTitle("Registrar Seguro");
}

void RegMod_seguro::on_aceptar_clicked()
{
    QDjango::setDebugEnabled(true);

    if(ui->nombreSeguro->text().simplified() == "" || ui->rucSeguro->text().simplified() == "-"){

        if(ui->nombreSeguro->text().simplified() == ""){
            ui->nombreSeguro->setFocus();
            QToolTip::showText(ui->nombreSeguro->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
        else if(ui->rucSeguro->text().simplified() == "-"){
            ui->rucSeguro->setFocus();
            QToolTip::showText(ui->rucSeguro->mapToGlobal(QPoint(10,8)), "Campo Obligatorio");
        }
    }

    else if(ui->correoSeguro->text().simplified() != "" && !emailEsValido(ui->correoSeguro->text()))
        cuadroMensaje("", "Error en el campo correo");

    else if(!rucEsValido(ui->rucSeguro->text()))
        cuadroMensaje("", "Ruc invalido, favor verifique su RUC", "Error");

    else if(ui->telefonoSeguro->text().simplified() != "--" && !telefonoEsValido(ui->telefonoSeguro->text()))
        cuadroMensaje("", "Error en el campo telefono", "Error");
    //Validador de nombre ya registrado

    else if(!esModificacion && existeEnLaBD("seguro", "nombre", ui->nombreSeguro->text())) {
        int resp = 0;
        QDjangoQuerySet<Seguro> seguros;
        Seguro *seguroTemp = seguros.filter(QDjangoWhere("nombre", QDjangoWhere::Equals, ui->nombreSeguro->text())).at(0);

        if(seguroTemp->getEstado() == "inactivo"){
            resp = cuadroMensaje("", "El Seguro se encuentra como inactivo en la base de datos\nDesea volver a ponerlo activo?", "pregunta");
            if(resp == QMessageBox::Ok)
            {
                seguroTemp->setEstado("activo");
                seguroTemp->save();
                this->close();
            }
        }
        else{
            cuadroMensaje("Error en el Registro", "Ya se encuentra registrado un Seguro con ese nombre", "error");
            delete seguroTemp;
        }
    }
    else
    {
        seguro_nuevo->setNombre(ui->nombreSeguro->text().simplified());
        seguro_nuevo->setRuc(ui->rucSeguro->text().simplified());
        seguro_nuevo->setContacto(ui->contactoSeguro->text().simplified());
        seguro_nuevo->setCorreo(ui->correoSeguro->text().simplified());
        seguro_nuevo->setDireccion(ui->direccionSeguro->text().simplified());
        seguro_nuevo->setEstado("activo");
        seguro_nuevo->setTelefono(ui->telefonoSeguro->text().simplified());
        if(id_seguro != -1) seguro_nuevo->setId_seguro(id_seguro);
        else
        {
            QSqlQuery query;

            int max_id = 0;
            if(query.exec("Select coalesce(max(id_seguro)+1,1) from seguro")){
                while(query.next()){
                    max_id = query.value(0).toInt();
                }
                seguro_nuevo->setId_seguro(max_id);

            }
            else{
                cuadroMensaje("Error en el query", query.lastError().text(), "Error");
            }
            delete seguro_nuevo;
        }
        if(seguro_nuevo->save())this->close();
        else qDebug() << "No se pudo Guardar el usuario";
    }
}



void RegMod_seguro::on_cancelar_clicked()
{
    close();
}
